A network interface facilitates communication between a computing system and a data network. Typical network interfaces have dedicated hardware that establishes a communications link with an external network. The hardware may be integrated with other components of a host computing system. Dedicated firmware and/or software may also be incorporated into the network interface. Common names for network interfaces include network interface card (NIC), network interface controller, network interface adapter and network interface unit.
Network capable computing systems generally have at least one dedicated network interface. The network interface provides a bridge between the internal system bus of the host computing system (such as a PCI or PCI Express bus) and an external data network (such as an Ethernet network). Network interfaces may be integrated with other system components (such as ‘on-board’ network controllers that are integrated with the system motherboard) or supplied as modular components (such as a PCI-e card).
Conventional network interfaces have two primary functions: receiving data from an external network and; transmitting data from the host computing system to the external network. The network interface interacts with the system bus of the host computing system during both operations to manage the exchange of data. These interactions conform to protocols (generally defined by the network interface and implemented by a driver for the network interface) that allow software applications executed by the host computing system to interact with the network interface.
Conventional interface driver protocols generally prioritize resource optimisation at the expense of communications latency. Data transactions between a network interface and host computing system using conventional driver protocols typically include control message exchanges to coordinate data transfer (such as the exchange of data allocation pointers and read confirmations). This can introduce significant latency that delays the transfer of network data between systems.